package org.gwc.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.TransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;

import javax.sql.DataSource;

/**
 * service层的配置类
 * 1、service
 * 2、开启aop注解的支持 aspect：@Before @After @AfterReturning @AfterThrowing @Around @Aspect @Order
 * 3、tx声明式事务管理，1、对应的事务管理器实现 [TransactionManager DataSource,Hibernate,Jpa]
 *                   2、开启事务注解支持
 */
@Configuration
@ComponentScan(value = "org.gwc.service")
@EnableAspectJAutoProxy // 开启aop注解
@EnableTransactionManagement // 开启事务注解
public class ServiceJavaConfig {

    /**
     *
     * @param database 从ioc容器中自动获取
     * @return
     */
    @Bean
    public TransactionManager transactionManager(DataSource database){
        DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
        dataSourceTransactionManager.setDataSource(database);
        return dataSourceTransactionManager;
    }
}
